-
-
Notifications
You must be signed in to change notification settings - Fork 442
Add original path to error messages #363
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
b25a26b
to
3f25805
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Can we move forward and make a release for this? this really helps a lot with migrating from Express 4 to Express 5 |
I think it is time to land it with new realease |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #363 +/- ##
===========================================
- Coverage 100.00% 99.21% -0.79%
===========================================
Files 1 1
Lines 668 381 -287
Branches 151 132 -19
===========================================
- Hits 668 378 -290
- Misses 0 3 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Refactored and added a test to reduce stack size for pillarjs/router#158. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, for posterity, why did you stop using generators?
Easiest way reduce the error stack size, otherwise it has 2-3 lines per generator. |
function* lexer(str: string): Generator<LexToken, LexToken> { | ||
function errorMessage(text: string, originalPath: string | undefined) { | ||
let message = text; | ||
if (originalPath !== undefined) message += `: ${originalPath}`; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have actually been meaning to ask if we could get the individual things on the error instance as properties, so this PR feel like a great time to mention that. It would help for o11y to have them that way as well as in the message.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just the path or something else too? I can add it in a new PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to skip for now. I forgot why I didn't do this originally but turning this into the error object instead of the message adds an extra line to the error stack which is additional obfuscation of the source (one complaint in the issue I'm trying to resolve).
Adding it to every error in the source code increases the package size by 1%. I don't think it's currently worth it since no one has asked for it, but if you feel strongly I can open the change still.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Opened a PR here #398.
Found a way to minimize the size increase a bit more by using an error sub-class. Since the package is ES2015+ that should work everywhere I support. Using the custom class does not add to the stack size in node at least.
Closes #336, #358, #356, and #354.
Adds
originalPath
toTokenData
, which will be used (when available) for the error messages. It's already added to any methods that input a string.